function validator(options) {
	this.options = options;
	this.fillOptions = function() {
		for ( var name in this.options) {
			this.rules[name] = options[name];
		}
	}
	this.rules = {
		tag : {
			validate : function(value) {
				return  value && /^.+$/.test(value) && value !== '选择标签';
			},
			errorMsg : '请选择标签',
			defaultValue : 'content'
		},
		required : {
			validate : function(value) {
				return /^.+$/.test(value.trim());
			},
			errorMsg : '必须要输入内容',
			defaultValue : 'content'
		},
		email : {
			validate : function(value) {
				return /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/.test(value);
			},
			errorMsg : '请输入正确的邮箱地址',
			defaultValue : 'kerbores@gmail.com'
		},
		phone : {
			validate : function(value) {
				return /^(13[0-9]|15[0|3|6|7|8|9]|18[3|5|8|9])\d{8}$/.test(value);
			},
			defaultValue : '13888888888',
			errorMsg : '电话号码不符合规范'
		},
		number : {
			validate : function(value) {
				return /^[\d]+$/.test(value);
			},
			defaultValue : '0',
			errorMsg : '只能输入数字'
		},
		integer : {
			validate : function(value) {
				return /^[\d]+$/.test(value) && value >= 0;
			},
			defaultValue : '0',
			errorMsg : '只能输入正数'
		},
		userName : {
			validate : function(value) {
				return /^[\w]{5,}$/.test(value);
			},
			defaultValue : 'Kerbores',
			errorMsg : '用户名只能包含字母而且不能少于5位'
		},
		name : {
			validate : function(value) {
				return /^[\w\u4e00-\u9fa5\u00b7]{2,}$/.test(value);
			},
			defaultValue : '如花',
			errorMsg : '请输入正确的姓名'
		},
		position : {
			validate : function(value) {
				return /^[\w\u4e00-\u9fa5\u00b7]{2,}$/.test(value);
			},
			defaultValue : '老板娘',
			errorMsg : '请输入正确的职位'
		},
		password : {
			validate : function(value) {
				return /^[\w]{6,}$/.test(value) && !/^[\d]+$/.test(value);
			},
			defaultValue : '1qaz2WSX',
			errorMsg : '密码必需为数字和字母的组合'
		},
		chinese : {
			validate : function(value) {
				return /^[\u4e00-\u9fa5]*$/.test(value);
			},
			defaultValue : '中文',
			errorMsg : '只能输入中文汉字'
		},
		url : {
			validate : function(value) {
				return /^https?:\/\/(([a-zA-Z0-9_-])+(\.)?)*(:\d+)?(\/((\.)?(\?)?=?&?[a-zA-Z0-9_-](\?)?)*)*$/.test(value);
			},
			defaultValue : 'http://www.kerbores.com',
			errorMsg : '请输入正确的url地址'
		}
	}, this.validationcallBack = function(status, dom, errorMsg, defaultValue) {
		if (status) {
			$(dom).css({
				'border-color' : '#0f0',
				'border-width' : '2px'
			});
		} else {
			$(dom).css({
				'border-color' : '#f00',
				'border-width' : '2px'
			});
			$.dialog.tips(errorMsg, 5);
		}
	}, this.validationForm = function(input, callback) {
		callback = callback ? callback : this.validationcallBack;
		var value = $(input).val();
		var type = $(input).attr("v-type");
		if (!type) {
			return true;
		}
		var defultValue = $(input).attr("defaultValue") ? $(input).attr("defaultValue") : this.rules[type] ? this.rules[type].defaultValue : " ";
		var errorMsg = $(input).attr("errorMsg") ? $(input).attr("errorMsg") : this.rules[type] ? this.rules[type].errorMsg : "输入的内容不正确";
		var reg_ = type == "reg" ? eval($(input).attr("reg")) : /^$/;
		var check_result = type != "reg" ? this.rules[type].validate(value) : reg_.test(value);
		callback(check_result, input, errorMsg, defultValue);
		return check_result;
	}, this.addRule = function(name, value) {
		this.rules[name] = value;
	}
}
$.fn.validation = function() {
	var v1 = arguments[0];
	var v2 = arguments[1];
	var callback = $.isFunction(v1) ? v1 : undefined;
	var options = $.isFunction(v1) ? v2 : v1;
	var va = new validator(options);
	va.fillOptions();
	if (!this.length) {
		console ? console.warn("Nothing selected, can't validate, returning nothing.") : $.noop();
		return;
	}
	var flag = {};
	$(this).each(function(i, item) {
		var result = va.validationForm(item, callback);
		flag[i] = result; // {true,false.....}
	})
	for ( var i in flag) {
		if (!flag[i]) {
			return flag[i];
		}
	}
	return true;
}